#!/bin/bash

set -euo pipefail
DEST="/usr/local/vpn"

# 检查是否通过命令行参数提供版本号
if [ $# -gt 0 ]; then
    VERSION_INPUT="$1"
else
    echo "📦 部署 VPN 工具包到 $DEST..."
    # 获取用户输入的版本号（可选）
    read -p "请输入要安装的版本号（直接回车使用最新版本）: " VERSION_INPUT
    VERSION_INPUT=${VERSION_INPUT:-"latest"}
fi

echo "### 步骤 1：下载"
# 根据用户输入决定下载哪个版本
if [ "$VERSION_INPUT" = "latest" ] || [ -z "$VERSION_INPUT" ]; then
    # 获取最新版本号
    LATEST_VERSION_URL="https://gitee.com/sunqinbo/openconnect_tools/raw/master/LATEST_VERSION"
    if LATEST_VERSION=$(wget -qO- "$LATEST_VERSION_URL"); then
        echo "检测到最新版本: $LATEST_VERSION"
        PACKAGE_URL="https://gitee.com/sunqinbo/openconnect_tools/archive/refs/tags/v${LATEST_VERSION}.tar.gz"
    fi
fi

# 下载
if [ "$VERSION_INPUT" = "latest" ] || [ -z "$VERSION_INPUT" ]; then
    if wget "$PACKAGE_URL" -O "/tmp/openconnect_tools.tar.gz" 2>/dev/null; then
        echo "✅ 下载完成"
    else
        echo "❌ 下载失败，请检查网络连接"
        exit 1
    fi
fi

sudo mkdir -p "$DEST"
sudo tar -xzf "/tmp/openconnect_tools.tar.gz" -C "/tmp/"
sudo mv "/tmp/openconnect_tools-v${LATEST_VERSION}" /tmp/vpn
echo "正在将文件复制到 $DEST..."
sudo cp -r /tmp/vpn/* "$DEST/"

sudo rm -rf /tmp/openconnect_tools*  /tmp/vpn

# 设置权限
sudo find "$DEST/bin" -type f -exec chmod +x {} \;
sudo find "$DEST/lib" -type f -exec chmod +x {} \;
sudo chmod 644 "$DEST/etc/vpn-routes.conf" 2>/dev/null || true

sudo chown -R "$USER:$USER" "$DEST" 2>/dev/null || true

echo "✅ 步骤 1 完成"

echo "📦 创建用户凭证..."
### 步骤 2：创建用户凭证
if [[ ! -f ~/.vpn-creds ]]; then
    echo "⚠️ 请设置您的 VPN 凭证信息"
    # 弹窗输入用户名，密码，VPN 服务器地址
    read -p "请输入用户名：" username
    read -p "请输入密码：" password
    read -p "请输入 VPN 登录服务器地址：" server
    cat > ~/.vpn-creds <<EOF
username=$username
password=$password
server=$server
EOF
    chmod 600 ~/.vpn-creds
    echo "✅ 凭证文件已创建: ~/.vpn-creds"
else
    echo "✅ 凭证文件已存在: ~/.vpn-creds"
fi

echo "✅ 步骤 2 完成"

echo "📦 创建路由配置文件..."
# 创建路由配置文件 （仅当不需要时）
# 咨询 是否需要创建路由配置文件
echo "是否需要创建分流路由配置文件？(y/n)"
read -r answer
if [[ $answer == "y" ]]; then
    if [[ ! -f "$DEST/etc/vpn-routes.conf" ]]; then
        sudo tee "$DEST/etc/vpn-routes.conf" > /dev/null << 'EOF'
# ===================================
# 🏢 公司内网 IP 段配置文件
# 用途：openconnect 分流路由
# 修改后无需重启，下次连接自动生效
# ===================================

# ========== 生产环境 ==========

# ========== 办公网络 ==========
172.16.1.0/24
# ========== 开发测试环境 ==========
#192.168.6.0/24       # Dev local
#192.168.22.0/24      # Dev test

# ⚠️ 注意：每行一个 CIDR，以 # 开头为注释，空行忽略
EOF
        echo "✅ 路由配置文件已创建"
    else
        echo "✅ 路由配置文件已存在"
    fi
fi

echo "✅ 步骤 3 完成"

echo ""
echo "✅ 部署完成！"
echo ""
echo "💡 使用说明："
echo "1. 将工具添加到 PATH（可选）："
echo "   echo 'export PATH=\"/usr/local/vpn/bin:\$PATH\"' >> ~/.bashrc"
echo "   source ~/.bashrc"
echo ""
echo "2. 连接 VPN："
echo "   vpn-connect.sh"
echo ""
echo "3. 接口诊断："
echo "   vpn-diag.sh"
echo "   - 所有脚本日志位于: /usr/local/vpn/logs/"
echo "4. 断开 VPN："
echo "   vpn-disconnect.sh"
echo ""
echo "4. 配置内网路由（编辑 /usr/local/vpn/etc/vpn-routes.conf)"
